<?php
namespace app\passport\logic;
use think\Session;
use think\Cookie;
use think\Db;


use Rainwsy\Aliyunmail\Send\Single;
use Rainwsy\Aliyunmail\Auth;

//逻辑语言层 就是最乱的语言放这里

class Passport //extends Model
{
	public function checkBot()
	{

	}

	public function checkLogin()
	{
		/**
		 * 检测用户是否登录 20161018
		 * true -> 正确 false->错误
		 */
		//默认为session模式
		//获取用户session
		//如果是未激活用户,那么要注意,需要提醒激活,status状态
		$userHash = Cookie::get('hash');

		$session = Session::get(\think\Config::get('passport_identifier'));
		if($userHash == Null || $session == NULL)
		{
			//如果cookie中HASH为空,则说明被清空……那么需要重新登录
			//如果session中为空,那么肯定是伪造了hash或者服务器清空,那么也需要重新登录
			
			Cookie::clear(\think\Config::get('cookie.prefix'));
			Session::clear();

			return false;
		}
		if($userHash == $session['hash']){
			return true;
		}else{
			return false;
		}
	}

	public function checkEmail($bin)
	{
		/**
		 * 检验邮箱是否注册
		 * return false or int
		 **/
		return $this->where('email',$bin)->value('id');
	}

	public function checkPhone()
	{
		/**
		 * 检验电话是否已经注册
		 */
	}

	public function checkUsername()
	{
		/**
		 * 检验英文账户名称是否已经注册
		 */
	}

	public function checkHash()
	{
		/**
		 * 检验Session中的密钥,于数据库中或者活跃数据表中
		 */
	}

	public function login($bin)
	{
		/**
		* 大众化登录方式,登录方式,登录账号,登录密码
		* 
		*/

		$data = [
		'email' =>  $bin['email'],
		];

		//把该用户的信息取出来,找不到信息返回错误,进行相关判断


		//dump($this->getLastSql());
		//判断用户状态,是否被禁止登录等
		//取出已经加密过的密码,然后加上salt,再进行一次加密操作,然后跟传来的密码比较
		}
	public function activate($name,$type = 'email')
	{
		/**
		* 激活账号
		* 生成验证hash,存储hash,……等一系列
		*/

		$address = $name;
		//默认邮箱激活方式
		//准备邮件发送组件
		\think\Loader::import("aliyun-php-sdk-core.Config");
		$iClientProfile = \DefaultProfile::getProfile("cn-hangzhou", "LTAIHO4OKX6TCerD", "grzjt014YIyS9zolHtb6nYWysT6k2K");
		$client = new \DefaultAcsClient($iClientProfile);
		$request = new \Dm\Request\V20151123\SingleSendMailRequest();
		//处理生成验证HASH
		$request->setAccountName("uc@i.tuduweb.com");//发件中心的邮箱账号
		$request->setFromAlias("bin");//发信人昵称
		$request->setAddressType(1);
		$request->setTagName("register");
		$request->setReplyToAddress("true");
		$request->setToAddress($address);
		$request->setSubject("网站注册验证邮件");
		$request->setHtmlBody("尊敬的用户,您的验证编码为:[]");
		try {
			$response = $client->getAcsResponse($request);
		}
		//还需要判断是否发送成功[邮箱是否存在?]
		catch (ClientException  $e) {
			($e->getErrorCode());   
			($e->getErrorMessage());
			return false;
		}
		catch (ServerException  $e) {        
			($e->getErrorCode());   
			($e->getErrorMessage());
			return false;
		}
		//把验证hash储存到数据库中
		return $response;
	}
}